package com.duguo.dynamicmvc.model.statusmessage;

import java.util.ArrayList;
import java.util.List;


public class ChainedStatusMessage implements StatusMessage {
	
	private final List<StatusMessage> messages=new ArrayList<StatusMessage>();
	int level=-1;

	public ChainedStatusMessage(StatusMessage firstMsg,StatusMessage secondMsg){
		addMessage(firstMsg);
		addMessage(secondMsg);
	}
	
	public void addMessage(StatusMessage statusMessage){
		if(statusMessage instanceof ChainedStatusMessage){
			ChainedStatusMessage tempChainedStatusMessage=(ChainedStatusMessage)statusMessage;
			for(StatusMessage msg:tempChainedStatusMessage.getMessages()){
				messages.add(msg);
			}
		}else{
			messages.add(statusMessage);
		}
	}

	public List<StatusMessage> getMessages() {
		return messages;
	}

	public int getLevel() {
		if(level<0){
			for(StatusMessage msg:messages){
				if(msg.getLevel()>level)
					level=msg.getLevel();
			}
		}
		return level;
	}

	public String getTitle() {
		return messages.get(0).getTitle();
	}

	public String getMessage() {
		StringBuffer stringBuffer=new StringBuffer();
		for(StatusMessage msg:messages){
			if(stringBuffer.length()>0)
				stringBuffer.append("<br/>\n");
			stringBuffer.append(msg.getMessage());
		}
		return stringBuffer.toString();
	}

	public String toString() {
		return getLevel()+": "+getMessage();
	}
}
